package algorithm.middle;


import java.util.Arrays;
import java.util.Comparator;

/**
 * 你正在参加一个多角色游戏，每个角色都有两个主要属性：攻击 和 防御 。给你一个二维整数数组 properties ，其中 properties[i] = [attacki, defensei] 表示游戏中第 i 个角色的属性。
 * <p>
 * 如果存在一个其他角色的攻击和防御等级 都严格高于 该角色的攻击和防御等级，则认为该角色为 弱角色 。更正式地，如果认为角色 i 弱于 存在的另一个角色 j ，那么 attackj > attacki 且 defensej > defensei 。
 * <p>
 * 返回 弱角色 的数量。
 * <p>
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/the-number-of-weak-characters-in-the-game
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */
public class NumberOfWeakCharacters1996 {
    public int numberOfWeakCharacters(int[][] properties) {
        //攻击力降序，防御力增序
        Arrays.sort(properties, (o1, o2) -> o1[0] == o2[0] ? (o1[1] - o2[1] ):( o2[0] - o1[0]));
        int res = 0;
        int max = 0;
        for (int[] p:properties){
            if (p[1]<max){
                res++;
            }else {
                max = p[1];
            }
        }
        return res;
    }

}
